<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Rabbit Semiconductor</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Rabbit_Semiconductor"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Rabbit_Semiconductor rootpage-Rabbit_Semiconductor skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Rabbit Semiconductor</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><style data-mw-deduplicate="TemplateStyles:r1305433154">
/* start https://en.wikipedia.org/ */
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style>
<style data-mw-deduplicate="TemplateStyles:r1295905060">
/* start https://en.wikipedia.org/ */
.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent}.mw-parser-output .infobox-3cols-child{margin:auto}.mw-parser-output .infobox .navbar{font-size:100%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media(min-width:640px){body.skin--responsive .mw-parser-output .infobox-table{display:table!important}body.skin--responsive .mw-parser-output .infobox-table>caption{display:table-caption!important}body.skin--responsive .mw-parser-output .infobox-table>tbody{display:table-row-group}body.skin--responsive .mw-parser-output .infobox-table th,body.skin--responsive .mw-parser-output .infobox-table td{padding-left:inherit;padding-right:inherit}}
/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1242257876">
/* start https://en.wikipedia.org/ */
.mw-parser-output .ib-company .infobox-label{padding-right:0.5em}.mw-parser-output .ib-company .infobox-data,.mw-parser-output .ib-company .infobox-below{line-height:1.35em}.mw-parser-output .ib-company-logo img{background-color:#f8f9fa}.mw-parser-output .ib-company-locality,.mw-parser-output .ib-company-country{display:inline}
/* end https://en.wikipedia.org/ */
</style><table class="infobox ib-company vcard"><caption class="infobox-title fn org" style="font-size: 125%;">Rabbit Semiconductor Inc.</caption><tbody><tr><th scope="row" class="infobox-label">Industry</th><td class="infobox-data category"><a href="Microcontroller" title="Microcontroller">microcontrollers</a></td></tr><tr><th scope="row" class="infobox-label">Founded</th><td class="infobox-data">1983</td></tr><tr><th scope="row" class="infobox-label">Headquarters</th><td class="infobox-data adr"><div class="ib-company-locality locality"><a href="Davis%2C_California" title="Davis, California">Davis</a>, <a href="California" title="California">California</a></div>, <div class="ib-company-country country-name"><a href="United_States" title="United States">United States</a></div></td></tr><tr><th scope="row" class="infobox-label">Owner</th><td class="infobox-data"><a href="Digi_International" title="Digi International">Digi International</a></td></tr><tr><th scope="row" class="infobox-label">Website</th><td class="infobox-data"><span class="url"><a rel="nofollow" class="external text" href="https://www.digi.com/lp/rabbit">www<wbr>.digi<wbr>.com<wbr>/lp<wbr>/rabbit</a></span></td></tr></tbody></table>
<p><b>Rabbit Semiconductor</b> is an American company which designs and sells the <a href="Rabbit_2000" title="Rabbit 2000">Rabbit</a> family of <a href="Microcontroller" title="Microcontroller">microcontrollers</a> and microcontroller modules.
For development, it provides <a href="Dynamic_C" class="mw-redirect" title="Dynamic C">Dynamic C</a>, a non-standard dialect of <a href="C_(programming_language)" title="C (programming language)">C</a> with proprietary structures for multitasking.
</p><p>Rabbit Semiconductor was purchased in 2006 by <a href="Digi_International" title="Digi International">Digi International</a> for $49 million.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> Before the purchase, Rabbit Semiconductor was a division of Z-World, Inc. Z-World developed and manufactured embedded controller products as well as embedded software development environments.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Microcontroller_architecture">Microcontroller architecture</h2></div>
<p>The Rabbit processor family shares many features with the <a href="Zilog_Z80" title="Zilog Z80">Zilog Z80/Z180</a> processors. For example, the <a href="Processor_register" title="Processor register">registers</a> of a Rabbit <a href="Rabbit_2000" title="Rabbit 2000">2000</a>/3000 processor are almost the same as the registers of a Z80/Z180 processor. The Rabbit 4000 processor expands to include the use of 32-bit registers. The <a href="Instruction_set" class="mw-redirect" title="Instruction set">instruction set</a> of Rabbit processors also closely resembles the instruction set of the Z80/Z180 family. While the opcodes of many instructions are the same between the Rabbit 2000/3000 processors and Z80/Z180 processors, the two families of processors are not binary compatible.
As with the Z80/Z180 family, the Rabbit processors are <a href="Complex_instruction_set_computer" title="Complex instruction set computer">CISC</a> processors.
</p><p>The Rabbit processor family has unique features. For example, the Z80/Z180 family disables <a href="Interrupt" title="Interrupt">interrupts</a> once an interrupt is serviced by an interrupt service routine. However, the Rabbit processors permit interrupts to interrupt service routines according to priorities (a total of 4).
</p><p>Rabbit Semiconductor claims that the instruction set of Rabbit processors is optimized for C code.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Dynamic_C">Dynamic C</h2></div>
<p>Perhaps the most notable feature of the Rabbit microcontroller is its development environment. Dynamic C, a product of Rabbit Semiconductor, has additions, deletions and inconsistencies compared to the ANSI-C standard.
</p><p>The Dynamic C IDE comes with extensive open-source libraries and sample code
released under the
<a href="MPL_license" class="mw-redirect" title="MPL license">MPL license</a> or
<a href="ISC_license" title="ISC license">ISC license</a>.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>
</p>
<dl><dt>Note</dt>
<dd>(Reference: Porting a Program to Dynamic C-Rabbit Semiconductor)</dd></dl>
<blockquote>
<p>Dynamic C follows the ISO/ANSI C standard when feasible and desirable. Because the standard does not
take into account the special needs of embedded systems, it is necessary to depart from the standard in
some areas and desirable in others. The standard does not take into account important embedded systems
issues such as read only memory and embedded assembly language. For this reason, practical compilers
intended for embedded systems do not completely comply with the standard, but use it as a guide.
</p>
</blockquote>
<p>As an example of an addition, Dynamic C has a <i>chaining</i> mechanism to chain fragments of code from different subroutines to an arbitrary number of chains. This extension permits the use of not only initialized variables, but any arbitrary code to execute before a program starts execution in the main function.
</p><p>As an example of a deletion, as of version 10.23 Dynamic C does not support <a href="Scope_(programming)" class="mw-redirect" title="Scope (programming)">block scope</a> variables or <a href="Bit_field" title="Bit field">bit fields</a>. The development toolchain does not include a separate preprocessor and linker, which may complicate the process of porting existing programs to the compiler. As of version 10.64 block scope for variables is supported.
</p><p>As an example of an inconsistency, Dynamic C implicitly treats all initialized global variables as if they were declared with the <code><a href="Const" class="mw-redirect" title="Const">const</a></code> qualifier. Furthermore, all <code>const</code> variables reside in flash memory. Earlier versions of Dynamic C did not check the use of the <code>const</code> keyword in parameters—it was possible to pass a <code>const</code> variable as a parameter to a function that did not expect it, potentially leading to attempts to write to flash memory. As of the latest version of Dynamic C, the compiler will produce an error when the user attempts to modify a <code>const</code> variable directly, and will produce a warning if the user discards the <code>const</code> qualifier when passing a parameter to a function.
</p>
<div class="mw-heading mw-heading3"><h3 id="Multitasking_constructs">Multitasking constructs</h3></div>
<p>One noteworthy feature of Dynamic C is its inclusion of language constructs to simplify multitasking. These constructs, the <code>costate</code> statement and the <code>slice</code> statement, implement a form of cooperative and preemptive multitasking, respectively. As an example, consider the following program which flashes two LEDs with different frequencies:
</p>
<div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span>
<span class="p">{</span>
<span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="c1">// Create 2 costatements which will toggle our LEDs.</span>
<span class="w"> </span><span class="n">costate</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">led1on</span><span class="p">();</span>
<span class="w"> </span><span class="n">waitfor</span><span class="p">(</span><span class="n">DelayMs</span><span class="p">(</span><span class="mi">100</span><span class="p">));</span>
<span class="w"> </span><span class="n">led1off</span><span class="p">();</span>
<span class="w"> </span><span class="n">waitfor</span><span class="p">(</span><span class="n">DelayMs</span><span class="p">(</span><span class="mi">50</span><span class="p">));</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="n">costate</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">led2on</span><span class="p">();</span>
<span class="w"> </span><span class="n">waitfor</span><span class="p">(</span><span class="n">DelayMs</span><span class="p">(</span><span class="mi">200</span><span class="p">));</span>
<span class="w"> </span><span class="n">led2off</span><span class="p">();</span>
<span class="w"> </span><span class="n">waitfor</span><span class="p">(</span><span class="n">DelayMs</span><span class="p">(</span><span class="mi">50</span><span class="p">));</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
<p>When this code is run, the first costatement will be executed, and the first LED will turn on. The costatement will then yield to the second statement while it waits for 100 milliseconds. The second costatement will execute in a similar manner. While both costatements are waiting for their time to elapse, the while loop will <a href="Busy-wait" class="mw-redirect" title="Busy-wait">busy-wait</a>, but this waiting time could potentially be used to perform other tasks. For more information, see the <a rel="nofollow" class="external text" href="http://www.rabbit.com/documentation/docs/manuals/DC/DCUserManual9/DCPUM.pdf">Dynamic C User's Manual</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Arduino" title="Arduino">Arduino</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.digi.com/news/pressrelease.jsp?prid=194">Digi International Acquires Rabbit Semiconductor</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20090213034006/http://www.digi.com/news/pressrelease.jsp?prid=194">Archived</a> 2009-02-13 at the <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.controleng.com/articles/digi-purchases-rabbit-semiconductor-for-49-million/">"Control Engineering | Digi purchases Rabbit Semiconductor for $49 million"</a>. <i>Control Engineering</i>. 2005-06-07<span class="reference-accessdate">. Retrieved <span class="nowrap">2022-07-06</span></span>.</cite></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.digi.com/lp/rabbit?utm_source=rabbit.com/documentation/docs/manuals/Rabbit3000/UsersManual/index.htm">"Rabbit | Digi International"</a>. <i>www.digi.com</i>.</cite></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text">
Jean J. Labrosse.
<a rel="nofollow" class="external text" href="https://books.google.com/books?id=TszzGImE9KsC">"Embedded Software: Know It All"</a>.
2007.
p. 246.</span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text">
<a rel="nofollow" class="external text" href="https://github.com/digidotcom/DCRabbit_10">"Dynamic C 10: for Rabbit-based embedded systems"</a>.</span>
</li>
</ol></div>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://webarchive.loc.gov/all/20020914163901/http%3A//www.rabbitsemiconductor.com/">Rabbit Semiconductor</a> at the <a href="Library_of_Congress" title="Library of Congress">Library of Congress</a> Web Archives (archived 2002-09-14)</li>
<li><a rel="nofollow" class="external text" href="http://ftp1.digi.com/support/documentation/019-0125K.pdf">Dynamic C 9 User's Manual</a></li>
<li><a rel="nofollow" class="external text" href="http://www.digi.com">Digi International</a></li>
<li><a rel="nofollow" class="external text" href="http://ftp1.digi.com/support/documentation/0220044_j.pdf">Porting a Program to Dynamic C</a></li>
<li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20111226064011/http://ftp1.digi.com/support/documentation/019-0152_L.pdf">Rabbit 4000 Family Instruction Reference</a> at the <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a> (archived 2011-12-26)</li>
<li><a rel="nofollow" class="external text" href="http://www.digi.com/products/wireless-wired-embedded-solutions/software-microprocessors-accessories/systems-on-chip/rabbit4000">Rabbit 4000</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20120321190701/http://www.digi.com/products/wireless-wired-embedded-solutions/software-microprocessors-accessories/systems-on-chip/rabbit4000">Archived</a> 2012-03-21 at the <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a></li>
<li><a rel="nofollow" class="external text" href="http://www.digi.com/products/wireless-wired-embedded-solutions/software-microprocessors-accessories/systems-on-chip/">Digi Systems on Chip</a></li>
<li><a rel="nofollow" class="external text" href="https://sourceforge.net/projects/bacrabbit/">Open Source BACnet Stack for Rabbit Family</a></li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-07-20" href="https://en.wikipedia.org/wiki/?title=Rabbit_Semiconductor&oldid=1301481055">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>